/*
 * PowerWindow.cpp
 *
 *  Created on: 14/11/2012
 *      Author: san
 */
#include "PowerWindow.h"
#include <iostream>
#include "Juego.h"
#include "Jugador.h"
#include "Partida.h"
#include <unistd.h>
PowerWindow::PowerWindow(Juego* juego ,Jugador* jugador):juego(juego), 
jugador(jugador) {
	this->add(this->lv);
	this->lv.setBackground("dibujos/background.jpg");
	this->lv.signal_button_press_event().connect(sigc::mem_fun(*this, &PowerWindow::onClick));
	this->refreshViewDispatcher.connect(sigc::mem_fun(*this, &PowerWindow::refreshScreen));
	this->logicThread = Glib::Thread::create(sigc::mem_fun(*this, &PowerWindow::logicMain), true);
}

PowerWindow::~PowerWindow() {}

void PowerWindow::refreshScreen() {
	std::cout << "mostrando imagenes"<< std::endl;
	lv.show(this->displayElements);
	std::cout<<"esto deberia imprimirse"<<std::endl;
}

void PowerWindow::logicMain() {
	//unsigned refresh = 0;
	std::vector<Dibujable *>::iterator i;
	Partida* partida = juego->crearPartida();
	std::cout << "creo la partida"<<std::endl;
	double ticks = 1;
		while (!juego->finalizoNivel()) {
			this->displayElements.clear();
			juego->run(ticks);
			std::cout<<"corrio el programa"<<std::endl;
			this->displayElements = partida->getDibujables();
			std::cout << "agrego dibujablesrefrescando la pantalla" << std::endl;
			this->refreshViewDispatcher();
			//sleep(1);
			usleep(100000);
			// if (refresh == 100) {
			// 	this->allElements.clear();
			// 	refresh = 0;
			// }
			//refresh++;
			this->displayElements.clear();			
			ticks += 1;
			std::cout << "ticks = "<<ticks<<std::endl;
		}
	
}


bool PowerWindow::onClick(GdkEventButton *button) {
	const double altura = 600;
	std::cout << "(" << button-> x << ", " << button-> y << ")" << std::endl;
	double x = button-> x;
	double y = altura - button->y;
	// CosoDibujable *cd = new CosoDibujable;
	// cd->setImagePath("chanchoButton.jpg");
	jugador->disparar(x, y); 
	// cd->setPosicionX(button->x);
	// cd->setPosicionY(button->y);
	//this->allElements.push_back(cd);
	return true;
}
